$(function () {
  init();

  function init() {
    // 1.0判断永久存储中有不有用户信息
    var userinfo = localStorage.getItem("userinfo");
    if (!userinfo) {
      // 1.01把当前路径存入回话储存   方便登陆后直接跳转
      sessionStorage.setItem("pageurl", location.href);
      // 2.0没有用户信息就要重新登陆  跳转登陆页面
      location.href="../pages/login.html";
      // 3.0直接跳出去 不在执行
      return;
    }
    eventList();
    getCart(); 
  
     
  }
    // 渲染数据完毕
  function getCart() {
      //1.0 拿到本地储存上的用户信息  拿里面的token  设置请求头  路径my/cart/all
      var userinfoStr=localStorage.getItem("userinfo");  //已经登陆才执行这一段代码
      // 2.0拿到的用户信息转出json字符串
      var userinfo=JSON.parse(userinfoStr);
        // console.log(userinfo);
        var token=userinfo.token;
        // console.log(token);
        // 发送请求  获取数据
        $.ajax({
          url:"my/cart/all",
          headers: {
            Authorization: token
          },
          dataType:"json",
          success:function (res) {
            var josnStr=JSON.parse(res.data.cart_info)
            // console.log(josnStr); 
            if(res.meta.status==200){
              var html=template("cart_tp",{data:josnStr});
              $(".goods_wrap").html(html);  
             //  渲染数据完毕后 初始化数字输入框  mui("选择器  父盒子").numbox().getValue();    
             mui(".mui-numbox").numbox();
            //  调用要在全部标签生成后
             countAll(); 
            }else{
              mui.toast(res.meta.msg);
            } 
          }
        })
        
        
  }

  // 开始进页面删除按钮和完成按钮 复选框 数字输入框 是隐藏的
  // 1.0点击编辑按钮显示隐藏的 
  function eventList() {
    // 计算总价格 绑定左右按钮
    $(".goods_wrap").on("tap",".mui-numbox .mui-btn",function () {
      // console.log(111);
      countAll();
    })

    // 编辑
    $("#editBtn").on("tap",function () {
      // alert(1111);
      // 2.0点击的时候切换类 样式 先定义好
      $("body").toggleClass("edit");
      // 3.0判断 body有不有edit这个类  有的话改成完成  
      //hasClass判断标签中有不有这个类
      if($("body").hasClass("edit")){
        $("#editBtn").text("完成");
      }else{
        $("#editBtn").text("编辑");
        // cartSync();
           editCart();
        //4.0 编辑的时候看有不有数据 有数据继续执行 没有数据结束执行   
        // 判断有不有数据看渲染出来的li有几个
        if($(".goods_wrap li").length==0){
          mui.toast("你还没有选择商品");
          return
        }
      }

    })

    // 点击删除按钮数据删除  绑定删除按钮点击事件
     $("#deleteBtn").on("tap",function () {
       // alert(1111);
       // 1.0点击编辑的时候看看删除按钮有不有选中的商品  看复选框  o_chk
      if($(".o_chk:checked").length==0){
        mui.toast("你还没有选择商品");
        return;
      }else{
        mui.confirm("确认删除","警告",["取消","确认"],function (eType) {
          // console.log(eType);
          if(eType.index==0){
              console.log("取消");
              
          }else{
            var $lis=$(".goods_wrap li");
            if($lis.length==0){
              mui.toast("没有数据")
              return;
            }
          // console.log("删除");
            deleteCart();
          }
          
        })
      }
     })
    
    //  生成订单部分开始
    $("#order_create_btn").on("tap",function () {
      // alert(1111);
      // 1.0判断有没有数据  判断li的条数
      if($(".goods_wrap li").length==0){
        mui.toast("你没有选购商品");
        return;
      }
      // 2.0发送到后台的参数
     var goodsObj=
      {
            "order_price":$(".price_num").text(),   //总价格
            "consignee_addr":"地址",
            "goods":[
                //循环遍历生成    通过循环push进来
            ]
        }
        // 3.0获取所以的li标签
        var $lis=$(".goods_wrap li");
        // 4.0循环遍历li
        for (var i = 0; i <  $lis.length; i++) {
         var li= $lis;
          var obj=$(li).data("obj");
          console.log(obj);
          goodsObj.goods.push({
            goods_id: obj.goods_id,
            // 购买数量不是库存！！
            goods_number: $(li).find(".mui-numbox-input").val(),
            goods_price: obj.goods_price
          }) 
        }
          //1.0 拿到本地储存上的用户信息  拿里面的token  设置请求头  路径my/cart/all
    var userinfoStr=localStorage.getItem("userinfo");  //已经登陆才执行这一段代码
    // 2.0拿到的用户信息转出json字符串
    var userinfo=JSON.parse(userinfoStr);
      // console.log(userinfo);
      var token=userinfo.token;
      // console.log(token);
        // 5.0发送ajax请求  
        $.ajax({
          url:"my/orders/create",
          type:"post",
           // 私有路径设置请求头
           headers: {
            Authorization: token
          },
          data:goodsObj,
          success:function (res) {
            // console.log(res);
            if(res.meta.status==200){
              setTimeout(function () {
                location.href="../pages/order.html";
              },1000)
            }else{
              mui.toast(res.meta.msg);
            }
            
          }
        })

      }) 
  }

    //  计算总价格 = 数量 乘以 单价
  function countAll() {
      //1.0 jq中获取所以的li标签 
     var $lis =$(".goods_wrap li")
    //  console.log($lis);
    // 1.01总价格  
      var total =0;
      //2.0 循环li标签  拿到里面的每一项数据
      for (var i = 0; i < $lis.length; i++) {
        //3.0 把所有的数据存在li里面  dom对象li 转出jq对象
       var li=$lis[i]
       // console.log(li);
      //  4.0 拿到li里面的对象obj  以对象的额方式打印出来
        var obj=$(li).data("obj")
          // console.log(obj);
        // 4.01拿到单价
        var price=obj.goods_price;
        // 4.02 数量  获取数字框里面的值    用户自选 不是后台获取
          // 方式1:用方式1  数字框是用户输入的 用户改变的
        var num =$(li).find(".mui-numbox-input").val();  
        // console.log(num);
        // 方式2: $(li).find(".mui-numbox-input").val();  找到li里面的.mui-numbox-input里面的
        // var num =$(li).find(".mui-numbox-input").val();
        // console.log(num);
        // 4.03累加 总价等于数量乘以单价
         total+=num*price;   
      }
      //  5.0总价输入到标签中
      $(".price_num").text(total);
      //  console.log(total);
      
   }

// 删除同步
function deleteCart() {
  // 1.0获取未被复选框选择的数据(li)
  var $lis=$(".goods_wrap li .o_chk").not(":checked").parents("li");
  // console.log($lis);
  // 2.0重新发请求    同步购物车请求
  cartSync($lis)
}


// 编辑同步
function editCart() {
  // 1.0获取所以的li
  var $lis=$(".goods_wrap li");
  cartSync($lis)
}




  // 同步封装
  function cartSync($lis) {
    // 创建一个空的大对象
    var params ={};
    // 1.0获取所以的li标签
    // var $lis=$(".goods_wrap li")
    // console.log($lis);
    // 2.0循环遍历 li
    for (var i = 0; i < $lis.length; i++) {
        var li =$lis[i];
        // console.log(li);data-obj h5自定义属性  可以拿到li标签的obj   
        var obj= $(li).data("obj");
        // console.log(obj);
        // 3.0同步修改里面的购买数量  数据库和用户输入的对应起来
        obj.amount=$(li).find(".mui-numbox-input").val();
        // console.log(obj); 
        // 5.0变成  商品id = 商品的信息   
        params[obj.goods_id]=obj;
    }
     // console.log(params);
    //1.0 拿到本地储存上的用户信息  拿里面的token  设置请求头  路径my/cart/all
    var userinfoStr=localStorage.getItem("userinfo");  //已经登陆才执行这一段代码
    // 2.0拿到的用户信息转出json字符串
    var userinfo=JSON.parse(userinfoStr);
      // console.log(userinfo);
      var token=userinfo.token;
      // console.log(token);
    // 发送请求  同步购物车
        $.ajax({
          url:"my/cart/sync",
          type:"post",
          data:{
            infos:JSON.stringify(params)
          },
          // 私有路径设置请求头
          headers: {
            Authorization: token
          },
          success:function (res) {
            // console.log(res);
            if(res.meta.status==200){
              // 重新刷新页面
              getCart()
            }else{
              mui.toast(res.meta.msg)
            }
          }
        })
    
  }
})



